Avasta React Server Actions, vÔimas funktsioon vormide esitamise ja andmete muutmise kÀsitlemiseks otse serveris, lihtsustades Reacti arendust ja suurendades turvalisust.
React Server Actions: Serveripoolne vormitöötlus lihtsustatud
React Server Actions, mis vÔeti kasutusele React 18-s ja mida on Next.js-is oluliselt tÀiustatud, pakuvad revolutsioonilist lÀhenemisviisi vormide esitamise ja andmete muutmise kÀsitlemiseks otse serveris. See vÔimas funktsioon lihtsustab arendusprotsessi, suurendab turvalisust ja parandab jÔudlust vÔrreldes traditsioonilise kliendipoolse andmete toomise ja manipuleerimisega.
Mis on React Server Actions?
Server Actions on asĂŒnkroonsed funktsioonid, mis töötavad serveris ja mida saab kĂ€ivitada otse Reacti komponentidest. Need vĂ”imaldavad teil teha serveripoolseid toiminguid, nĂ€iteks:
- Vormide esitamine: Töötle vormiandmeid turvaliselt serveris.
- Andmete muutmine: Uuenda andmebaase vÔi vÀliseid API-sid.
- Autentimine: Halda kasutajate sisselogimisi ja registreerimist.
- Serveripoolne loogika: KÀivita keerukat Àriloogikat, ilma et see oleks kliendile nÀhtav.
Server Actions'i peamine eelis on see, et need vÔimaldavad teil kirjutada serveripoolset koodi oma Reacti komponentides, kÔrvaldades vajaduse eraldi API marsruutide ja keeruka kliendipoolse andmete toomise loogika jÀrele. See UI ja serveripoolse loogika koos paiknemine viib hallatavama ja tÔhusama koodibaasini.
React Server Actions'i kasutamise eelised
React Server Actions'i kasutamine pakub mitmeid olulisi eeliseid:
Lihtsustatud arendus
Server Actions vÀhendavad boilerplaadi koodi, vÔimaldades teil kÀsitleda vormide esitamisi ja andmete muutmisi otse oma Reacti komponentides. See kÔrvaldab vajaduse eraldi API lÔpp-punktide ja keeruka kliendipoolse andmete toomise loogika jÀrele, muutes arendusprotsessi sujuvamaks ja muutes teie koodi lihtsamini mÔistetavaks ja hooldatavaks. MÔelge lihtsale kontaktivormile. Ilma Server Actions'ita vajaksite eraldi API marsruuti vormi esitamise kÀsitlemiseks, kliendipoolset JavaScripti andmete saatmiseks ja veakÀsitlusloogikat nii kliendis kui ka serveris. Server Actions'iga saab seda kÔike kÀsitleda komponendi sees.
Suurem turvalisus
Koodi serveris kĂ€itamise kaudu vĂ€hendavad Server Actions teie rakenduse rĂŒnnakupinda. Tundlikud andmed ja Ă€riloogika hoitakse kliendi eest eemal, takistades pahatahtlikel kasutajatel neid rikkuda. NĂ€iteks andmebaasi mandaate vĂ”i API vĂ”tmeid ei avaldata kunagi kliendipoolses koodis. Kogu andmebaasi interaktsioon toimub serveris, vĂ€hendades SQL-i sĂŒstimise vĂ”i volitamata juurdepÀÀsu ohtu.
Parem jÔudlus
Server Actions vĂ”ib parandada jĂ”udlust, vĂ€hendades JavaScripti hulka, mida on vaja kliendis alla laadida ja kĂ€ivitada. See on eriti kasulik kasutajatele, kellel on madala vĂ”imsusega seadmed vĂ”i aeglane internetiĂŒhendus. Andmetöötlus toimub serveris ja kliendile saadetakse ainult vajalikud UI vĂ€rskendused, mille tulemuseks on kiirem lehe laadimine ja sujuvam kasutuskogemus.
Optimistlikud vÀrskendused
Server Actions integreeruvad sujuvalt Reacti Suspense ja Transitions'iga, vÔimaldades optimistlikke vÀrskendusi. Optimistlikud vÀrskendused vÔimaldavad teil UI-d kohe vÀrskendada, isegi enne, kui server on toimingu kinnitanud. See tagab reageerivama ja kaasahaaravama kasutuskogemuse, kuna kasutajad ei pea ootama serveri vastust, enne kui nad nÀevad oma toimingute tulemusi. E-kaubanduses saab ostukorvi lisatava elemendi kohe kuvada, samal ajal kui server kinnitab taustal lisamist.
Progressiivne tÀiustamine
Server Actions toetavad progressiivset tÀiustamist, mis tÀhendab, et teie rakendus vÔib endiselt toimida, isegi kui JavaScript on keelatud vÔi seda ei Ônnestu laadida. Kui JavaScript on keelatud, esitatakse vormid traditsiooniliste HTML-vormidena ja server kÀsitleb esitamist ja suunab kasutaja uuele lehele. See tagab, et teie rakendus jÀÀb kÀttesaadavaks kÔigile kasutajatele, olenemata nende brauseri konfiguratsioonist vÔi vÔrgutingimustest. See on eriti oluline juurdepÀÀsetavuse ja SEO jaoks.
Kuidas kasutada React Server Actions'it
React Server Actions'i kasutamiseks peate kasutama raamistikku, mis neid toetab, nÀiteks Next.js. Siin on samm-sammult juhend:
1. Defineeri Server Action
Looge asĂŒnkroonse funktsioon, mis töötab serveris. See funktsioon peaks kĂ€sitlema loogikat, mida soovite serveris kĂ€ivitada, nĂ€iteks andmebaasi vĂ€rskendamine vĂ”i API kutsumine. MĂ€rgistage funktsioon direktiiviga `"use server"` ĂŒlaosas, et nĂ€idata, et see on Server Action. See direktiiv ĂŒtleb Reacti kompilaatorile, et funktsiooni tuleb kĂ€sitleda serveripoolse funktsioonina ning kĂ€sitseda automaatselt andmete serialiseerimist ja deserialiseerimist kliendi ja serveri vahel.
// app/actions.js
'use server'
import { revalidatePath } from 'next/cache';
import { saveMessage } from './db';
export async function createMessage(prevState, formData) {
const message = formData.get('message');
try {
await saveMessage(message);
revalidatePath('/'); // Clear the route cache
return { message: 'Message saved successfully!' };
} catch (e) {
return { message: 'Failed to save message' };
}
}
Selgitus:
- `'use server'` direktiiv mÀrgib selle funktsiooni Server Actionina.
- `revalidatePath('/')` tĂŒhjendab marsruudi vahemĂ€lu, tagades, et vĂ€rskendatud andmed tuuakse jĂ€rgmisel pĂ€ringul. See on andmete jĂ€rjepidevuse sĂ€ilitamiseks ĂŒlioluline.
- `saveMessage(message)` on teie tegeliku andmebaasi interaktsiooniloogika kohatÀide. See eeldab, et teil on mujal mÀÀratletud funktsioon `saveMessage` sÔnumi andmebaasi salvestamise kÀsitlemiseks.
- Funktsioon tagastab olekuobjekti, mida saab kasutada kasutajale tagasiside kuvamiseks.
2. Impordi ja kasuta Server Action'it oma komponendis
Importige Server Action oma Reacti komponenti ja kasutage seda vormielemendi `action` rekvisiidina. `useFormState` konksu saab kasutada vormi oleku haldamiseks ja kasutajale tagasiside kuvamiseks.
// app/page.jsx
'use client';
import { useFormState } from 'react-dom';
import { createMessage } from './actions';
export default function Home() {
const [state, formAction] = useFormState(createMessage, {message: ''});
return (
);
}
Selgitus:
- `'use client'` direktiiv mÀÀrab, et see on kliendikomponent (kuna see kasutab `useFormState`).
- `useFormState(createMessage, {message: ''})` initsialiseerib vormi oleku `createMessage` Server Actioniga. Teine argument on algolek.
- `form` elemendi rekvisiit `action` on seatud `formAction` vÀÀrtuseks, mille tagastab `useFormState`.
- Muutuja `state` sisaldab Server Actioni tagastusvÀÀrtust, mida saab kasutada kasutajale tagasiside kuvamiseks.
3. KĂ€sitle vormiandmeid
Server Actioni sees pÀÀsete vormiandmetele juurde `FormData` API abil. See API pakub mugava viisi vormivÀljade vÀÀrtustele juurdepÀÀsuks.
'use server'
export async function createMessage(prevState, formData) {
const message = formData.get('message');
// ...
}
4. KĂ€sitle vigu
Kasutage `try...catch` plokke, et kÀsitleda vigu, mis vÔivad Server Actioni kÀivitamise ajal tekkida. Tagastage olekuobjektis veateade, et seda kasutajale kuvada.
'use server'
export async function createMessage(prevState, formData) {
const message = formData.get('message');
try {
// ...
} catch (e) {
return { message: 'Failed to save message' };
}
}
5. Revalidateeri andmed
PÀrast seda, kui Server Action on andmeid edukalt muutnud, peate vÔib-olla andmete vahemÀlu uuesti valideerima, et tagada, et UI kajastab uusimaid muudatusi. Kasutage funktsioone `revalidatePath` vÔi `revalidateTag` teegist `next/cache`, et uuesti valideerida konkreetseid radu vÔi silte.
'use server'
import { revalidatePath } from 'next/cache';
export async function createMessage(prevState, formData) {
// ...
revalidatePath('/'); // Clear the route cache
// ...
}
TĂ€psem kasutamine
Andmete muutmine
Server Actions sobivad eriti hĂ€sti andmete muutmiseks, nĂ€iteks andmebaaside vĂ”i vĂ€liste API-de vĂ€rskendamiseks. Saate kasutada Server Actions'it keerukate andmete muutmiste kĂ€sitlemiseks, mis nĂ”uavad serveripoolset loogikat, nĂ€iteks andmete valideerimine, arvutuste tegemine vĂ”i suhtlemine mitme andmeallikaga. MĂ”elge stsenaariumile, kus peate vĂ€rskendama kasutaja profiili ja saatma kinnitusmeili. Server Action saab kĂ€sitleda nii andmebaasi vĂ€rskendamist kui ka meili saatmise protsessi ĂŒhes aatomioperatsioonis.
Autentimine ja autoriseerimine
Server Actions'it saab kasutada autentimise ja autoriseerimise kÀsitlemiseks. Autentimise ja autoriseerimise kontrollide tegemisega serveris saate tagada, et ainult volitatud kasutajatel on juurdepÀÀs tundlikele andmetele ja funktsioonidele. Saate kasutada Server Actions'it kasutajate sisselogimiste, registreerimiste ja parooli lÀhtestamiste kÀsitlemiseks. NÀiteks saab Server Action kontrollida kasutaja mandaate andmebaasi vastu ja tagastada tokeni, mida saab kasutada jÀrgnevate pÀringute autentimiseks.
Edge funktsioonid
Server Actions'it saab juurutada Edge funktsioonidena, mis töötavad teie kasutajatele lÀhedasel globaalses serverite vÔrgus. See vÔib oluliselt vÀhendada latentsust ja parandada jÔudlust, eriti geograafiliselt hajutatud asukohtades asuvate kasutajate jaoks. Edge funktsioonid sobivad ideaalselt Server Actions'i kÀsitlemiseks, mis nÔuavad madalat latentsust, nÀiteks reaalajas andmete vÀrskendused vÔi isikupÀrastatud sisu edastamine. Next.js pakub sisseehitatud tuge Server Actions'i juurutamiseks Edge funktsioonidena.
Voogedastus
Server Actions toetavad voogedastust, mis vĂ”imaldab teil saata andmeid kliendile tĂŒkkidena, kui need kĂ€ttesaadavaks saavad. See vĂ”ib parandada teie rakenduse tajutavat jĂ”udlust, eriti Server Actions'i puhul, mille kĂ€ivitamine vĂ”tab kaua aega. Voogedastus on eriti kasulik suurte andmekogumite vĂ”i keerukate arvutuste kĂ€sitlemiseks. NĂ€iteks saate otsingutulemused kliendile voogesitada, kui need andmebaasist kĂ€tte saadakse, pakkudes reageerivamat kasutuskogemust.
Parimad praktikad
Siin on mÔned parimad praktikad, mida React Server Actions'i kasutamisel jÀrgida:
- Hoidke Server Actions vĂ€ikesed ja keskendunud: Iga Server Action peaks tĂ€itma ĂŒhte selgelt mÀÀratletud ĂŒlesannet. See muudab teie koodi lihtsamini mĂ”istetavaks, testitavaks ja hooldatavaks.
- Kasutage kirjeldavaid nimesid: Valige nimed, mis selgelt nĂ€itavad Server Actioni eesmĂ€rki. NĂ€iteks `createComment` vĂ”i `updateUserProfile` on paremad kui ĂŒldised nimed nagu `processData`.
- Valideerige andmed serveris: Valideerige alati andmed serveris, et vĂ€ltida pahatahtlikel kasutajatel oma rakendusse kehtetute andmete sisestamist. See hĂ”lmab andmetĂŒĂŒpide, vormingute ja vahemike valideerimist.
- KÀsitlege vigu graatsiliselt: Kasutage `try...catch` plokke vigade kÀsitlemiseks ja kasutajale informatiivsete veateadete esitamiseks. VÀltige tundliku veateabe avaldamist kliendile.
- Kasutage optimistlikke vÀrskendusi: Pakkuge reageerivamat kasutuskogemust, vÀrskendades UI-d kohe, isegi enne, kui server on toimingu kinnitanud.
- Valideerige andmed vajadusel uuesti: Tagage, et UI kajastab uusimaid muudatusi, valideerides andmete vahemÀlu uuesti pÀrast seda, kui Server Action on andmeid muutnud.
Reaalse maailma nÀited
Vaatleme mĂ”ningaid reaalseid nĂ€iteid selle kohta, kuidas React Server Actions'it saab kasutada erinevat tĂŒĂŒpi rakendustes:
E-kaubanduse rakendus
- Elemendi lisamine ostukorvi: Server Action saab kÀsitleda elemendi lisamist kasutaja ostukorvi ja ostukorvi kogusumma vÀrskendamist andmebaasis. Optimistlikke vÀrskendusi saab kasutada elemendi koheseks kuvamiseks ostukorvis.
- Makse töötlemine: Server Action saab kÀsitleda makse töötlemist kolmanda osapoole maksevÀrava abil. Server Action saab ka andmebaasis tellimuse olekut vÀrskendada ja kasutajale kinnitusmeili saata.
- TooteĂŒlevaate esitamine: Server Action saab kĂ€sitleda tooteĂŒlevaate esitamist ja selle andmebaasi salvestamist. Server Action saab ka arvutada toote keskmise hinnangu ja vĂ€rskendada toote ĂŒksikasjade lehte.
Sotsiaalmeedia rakendus
- Uue sÀutsu postitamine: Server Action saab kÀsitleda uue sÀutsu postitamist ja selle andmebaasi salvestamist. Server Action saab ka vÀrskendada kasutaja ajajoont ja teavitada nende jÀlgijaid.
- Postituse meeldimine: Server Action saab kÀsitleda postituse meeldimist ja meeldimiste arvu vÀrskendamist andmebaasis. Optimistlikke vÀrskendusi saab kasutada vÀrskendatud meeldimiste arvu koheseks kuvamiseks.
- Kasutaja jÀlgimine: Server Action saab kÀsitleda kasutaja jÀlgimist ja jÀlgijate ja jÀlgitavate arvude vÀrskendamist andmebaasis.
SisuhaldussĂŒsteem (CMS)
- Uue blogipostituse loomine: Server Action saab kÀsitleda uue blogipostituse loomist ja selle andmebaasi salvestamist. Server Action saab ka postituse jaoks luua slug'i ja vÀrskendada saidikaarti.
- Lehe vÀrskendamine: Server Action saab kÀsitleda lehe vÀrskendamist ja selle andmebaasi salvestamist. Server Action saab ka uuesti valideerida lehe vahemÀlu, et tagada vÀrskendatud sisu kuvamine kasutajatele.
- Muudatuse avaldamine: Server Action saab kÀsitleda muudatuse avaldamist andmebaasis ja kÔigi tellijate teavitamist.
Rahvusvahelistamise kaalutlused
Ălemaailmsele publikule rakenduste arendamisel on oluline arvestada rahvusvahelistamise (i18n) ja lokaliseerimise (l10n). Siin on mĂ”ned kaalutlused React Server Actions'i kasutamisel rahvusvahelistatud rakendustes:
- Erinevate kuupÀeva- ja kellaaegavormingute kÀsitlemine: Kasutage `Intl` API-t kuupÀevade ja kellaaegade vormindamiseks vastavalt kasutaja lokaadile.
- Erinevate numbrivormingute kÀsitlemine: Kasutage `Intl` API-t numbrite vormindamiseks vastavalt kasutaja lokaadile.
- Erinevate valuutade kÀsitlemine: Kasutage `Intl` API-t valuutade vormindamiseks vastavalt kasutaja lokaadile.
- Veateadete tÔlkimine: TÔlkige veateated kasutaja keelde.
- Paremalt vasakule (RTL) keelte toetamine: Veenduge, et teie rakendus toetab RTL-keeli, nÀiteks araabia ja heebrea keelt.
NÀiteks kuupÀevasisestust nÔudva vormi töötlemisel saab Server Action kasutada `Intl.DateTimeFormat` API-t kuupÀeva parsimiseks vastavalt kasutaja lokaadile, tagades, et kuupÀeva tÔlgendatakse Ôigesti olenemata kasutaja piirkondlikest seadetest.
JĂ€reldus
React Server Actions on vĂ”imas tööriist serveripoolse vormitöötluse ja andmete muutmise lihtsustamiseks Reacti rakendustes. VĂ”imaldades teil kirjutada serveripoolset koodi otse oma Reacti komponentides, vĂ€hendavad Server Actions boilerplaadi koodi, suurendavad turvalisust, parandavad jĂ”udlust ja vĂ”imaldavad optimistlikke vĂ€rskendusi. JĂ€rgides selles juhendis toodud parimaid praktikaid, saate kasutada Server Actions'it, et ehitada jĂ”ulisemaid, skaleeritavamaid ja hooldatavamaid Reacti rakendusi. Kuna React areneb pidevalt, mĂ€ngivad Server Actions kahtlemata ĂŒha olulisemat rolli veebiarenduse tulevikus.